home *** CD-ROM | disk | FTP | other *** search
/ Visual Basic Toolbox / Visual Basic Toolbox (P.I.E.)(1996).ISO / buttons / toolb160 / mkbitmap / move.frm < prev    next >
Text File  |  1994-06-21  |  16KB  |  533 lines

  1. VERSION 2.00
  2. Begin Form frmMove 
  3.    BackColor       =   &H00C0C0C0&
  4.    Caption         =   "Bitmap creator for the TOOLBARS.VBX"
  5.    ClientHeight    =   4215
  6.    ClientLeft      =   1050
  7.    ClientTop       =   1770
  8.    ClientWidth     =   7560
  9.    Height          =   4905
  10.    Icon            =   MOVE.FRX:0000
  11.    Left            =   990
  12.    LinkTopic       =   "Form1"
  13.    ScaleHeight     =   281
  14.    ScaleMode       =   3  'Pixel
  15.    ScaleWidth      =   504
  16.    Top             =   1140
  17.    Width           =   7680
  18.    Begin PictureBox picTemp 
  19.       BorderStyle     =   0  'None
  20.       Height          =   420
  21.       Left            =   45
  22.       ScaleHeight     =   28
  23.       ScaleMode       =   3  'Pixel
  24.       ScaleWidth      =   31
  25.       TabIndex        =   4
  26.       Top             =   4095
  27.       Visible         =   0   'False
  28.       Width           =   465
  29.    End
  30.    Begin PictureBox picBitmap 
  31.       BorderStyle     =   0  'None
  32.       Height          =   420
  33.       Left            =   540
  34.       ScaleHeight     =   28
  35.       ScaleMode       =   3  'Pixel
  36.       ScaleWidth      =   31
  37.       TabIndex        =   5
  38.       Top             =   4095
  39.       Visible         =   0   'False
  40.       Width           =   465
  41.    End
  42.    Begin CommonDialog CMDialog1 
  43.       Left            =   0
  44.       Top             =   0
  45.    End
  46.    Begin VScrollBar vsbScroll 
  47.       Height          =   3735
  48.       Left            =   7200
  49.       TabIndex        =   3
  50.       Top             =   60
  51.       Width           =   255
  52.    End
  53.    Begin HScrollBar hsbScroll 
  54.       Height          =   255
  55.       Left            =   120
  56.       TabIndex        =   2
  57.       Top             =   3780
  58.       Width           =   7095
  59.    End
  60.    Begin PictureBox picContainer 
  61.       Height          =   3735
  62.       Left            =   120
  63.       ScaleHeight     =   247
  64.       ScaleMode       =   3  'Pixel
  65.       ScaleWidth      =   471
  66.       TabIndex        =   0
  67.       Top             =   60
  68.       Width           =   7095
  69.       Begin PictureBox picBackGround 
  70.          BorderStyle     =   0  'None
  71.          Height          =   11520
  72.          Left            =   0
  73.          ScaleHeight     =   768
  74.          ScaleMode       =   3  'Pixel
  75.          ScaleWidth      =   1024
  76.          TabIndex        =   1
  77.          Top             =   0
  78.          Width           =   15360
  79.          Begin Image imgButton 
  80.             Height          =   330
  81.             Index           =   0
  82.             Left            =   240
  83.             Top             =   360
  84.             Visible         =   0   'False
  85.             Width           =   360
  86.          End
  87.       End
  88.    End
  89.    Begin Menu mnuFile 
  90.       Caption         =   "&File"
  91.       Begin Menu mnuNew 
  92.          Caption         =   "&New"
  93.       End
  94.       Begin Menu mnuOpen 
  95.          Caption         =   "&Open..."
  96.       End
  97.       Begin Menu mnuSave 
  98.          Caption         =   "&Save..."
  99.       End
  100.       Begin Menu mnuSaveAs 
  101.          Caption         =   "Save &As..."
  102.       End
  103.       Begin Menu mnuSep1 
  104.          Caption         =   "-"
  105.       End
  106.       Begin Menu mnuExit 
  107.          Caption         =   "&Exit"
  108.       End
  109.    End
  110.    Begin Menu mnuOptions 
  111.       Caption         =   "&Options"
  112.       Begin Menu mnuAutoGrid 
  113.          Caption         =   "&Auto Grid"
  114.          Checked         =   -1  'True
  115.       End
  116.       Begin Menu mnuSep3 
  117.          Caption         =   "-"
  118.       End
  119.       Begin Menu mnuSelDir 
  120.          Caption         =   "&Select bitmapdirectory..."
  121.       End
  122.       Begin Menu mnuAddBitmap 
  123.          Caption         =   "&Add bitmap"
  124.       End
  125.       Begin Menu mnuSep2 
  126.          Caption         =   "-"
  127.       End
  128.       Begin Menu mnuGenerate 
  129.          Caption         =   "&Generate bitmap..."
  130.       End
  131.    End
  132. End
  133. Option Explicit
  134. Declare Function BitBlt Lib "GDI" (ByVal hDestDC As Integer, ByVal X As Integer, ByVal Y As Integer, ByVal nWidth As Integer, ByVal nHeight As Integer, ByVal hSrcDC As Integer, ByVal XSrc As Integer, ByVal YSrc As Integer, ByVal dwRop As Long) As Integer
  135. Const SRCCOPY = &HCC0020 ' (DWORD) dest = source
  136.  
  137. Dim miCurrentButton As Integer
  138. Dim miOffSetX As Integer
  139. Dim miOffSetY As Integer
  140. Dim iNrButtons As Integer
  141. Dim mbChanged As Integer
  142. Dim msFileName As String
  143. Dim miOldX As Integer, miOldY As Integer
  144. Dim mbCancel As Integer
  145.  
  146. Const msCaption = "Bitmap creator for the TOOLBARS.VBX - "
  147. Const msUntitled = "[Untitled]"
  148.  
  149. Sub Form_Load ()
  150.     mbCancel = False
  151.     mbChanged = False
  152.     msFileName = ""
  153.     Me.Caption = msCaption + msUntitled
  154.     miCurrentButton = -1
  155.     Show
  156.     gsBitmapDir = ""
  157.     frmSelDir.Show 1
  158.     If gsBitmapDir <> "" Then
  159.     Load frmSelBitmap
  160.     frmSelBitmap.lblAction.Caption = "GO"
  161.     End If
  162. End Sub
  163.  
  164. Sub Form_Resize ()
  165.     If Me.ScaleWidth - 35 > 0 Then
  166.     picContainer.Width = Me.ScaleWidth - 35
  167.     Else
  168.     Exit Sub
  169.     End If
  170.     If Me.ScaleHeight - 35 > 0 Then
  171.     picContainer.Height = Me.ScaleHeight - 35
  172.     Else
  173.     Exit Sub
  174.     End If
  175.     vsbScroll.Left = picContainer.Left + picContainer.Width - 1
  176.     vsbScroll.Height = picContainer.Height
  177.     hsbScroll.Top = picContainer.Top + picContainer.Height - 1
  178.     hsbScroll.Width = picContainer.Width
  179.     hsbScroll.Max = picBackGround.Width - picContainer.Height
  180.     hsbScroll.LargeChange = 20
  181.     hsbScroll.SmallChange = 1
  182.     vsbScroll.Max = picBackGround.Height - picContainer.Height
  183.     vsbScroll.LargeChange = 20
  184.     vsbScroll.SmallChange = 1
  185. End Sub
  186.  
  187. Sub Form_Unload (Cancel As Integer)
  188.     If mbChanged Then
  189.     If MsgBox("Current bitmap has changed. Save changes?", 36, "bitmap changed") = 6 Then
  190.         mnuSave_Click
  191.         If mbCancel Then
  192.         Cancel = True
  193.         Exit Sub
  194.         End If
  195.     End If
  196.     End If
  197.     Unload frmSelBitmap
  198.     End
  199. End Sub
  200.  
  201. Sub hsbScroll_Change ()
  202.     ScrollHorizontal
  203. End Sub
  204.  
  205. Sub hsbScroll_Scroll ()
  206.     ScrollHorizontal
  207. End Sub
  208.  
  209. Sub imgButton_DblClick (Index As Integer)
  210.     If MsgBox("Remove this bitmap?", 36, "Remove bitmap") = 6 Then
  211.     Unload imgButton(Index)
  212.     End If
  213. End Sub
  214.  
  215. Sub imgButton_MouseDown (Index As Integer, Button As Integer, Shift As Integer, X As Single, Y As Single)
  216.     miOldX = imgButton(Index).Left
  217.     miOldY = imgButton(Index).Top
  218.     miCurrentButton = Index
  219.     miOffSetX = X / Screen.TwipsPerPixelX
  220.     miOffSetY = Y / Screen.TwipsPerPixelY
  221.     imgButton(Index).ZOrder 0
  222. End Sub
  223.  
  224. Sub imgButton_MouseMove (Index As Integer, Button As Integer, Shift As Integer, X As Single, Y As Single)
  225.     If Index = miCurrentButton Then
  226.     imgButton(Index).Move imgButton(Index).Left + X / Screen.TwipsPerPixelX - miOffSetX, imgButton(Index).Top + Y / Screen.TwipsPerPixelY - miOffSetY
  227.     End If
  228. End Sub
  229.  
  230. Sub imgButton_MouseUp (Index As Integer, Button As Integer, Shift As Integer, X As Single, Y As Single)
  231.     If Index = miCurrentButton Then
  232.     imgButton(Index).Move RoundTo(imgButton(Index).Width, imgButton(Index).Left), RoundTo(imgButton(Index).Height, imgButton(Index).Top)
  233.     If miOldX <> imgButton(Index).Left Or miOldY <> imgButton(Index).Top Then mbChanged = True
  234.     miCurrentButton = -1
  235.     End If
  236. End Sub
  237.  
  238. Sub mnuAddBitmap_Click ()
  239.     picBackGround_DblClick
  240. End Sub
  241.  
  242. Sub mnuAutoGrid_Click ()
  243.     mnuAutoGrid.Checked = Not mnuAutoGrid.Checked
  244. End Sub
  245.  
  246. Sub mnuExit_Click ()
  247.     Unload Me
  248. End Sub
  249.  
  250. Sub mnuGenerate_Click ()
  251. Dim iRes As Integer
  252. Dim I As Integer, J As Integer
  253. Dim sFile As String
  254.     Screen.MousePointer = 11
  255.     frmAction!lblAction.Caption = "Generating bitmap...."
  256.     frmAction.Show
  257.     frmAction.Refresh
  258.     On Local Error Resume Next
  259.     picBitmap.Width = 0
  260.     picBitmap.Height = 0
  261.     For I = 1 To iNrButtons
  262.     J = imgButton(I).Left
  263.     If Err = 0 Then
  264.         If imgButton(I).Left + imgButton(I).Width > picBitmap.Width Then picBitmap.Width = imgButton(I).Left + imgButton(I).Width
  265.         If imgButton(I).Top + imgButton(I).Height > picBitmap.Height Then picBitmap.Height = imgButton(I).Top + imgButton(I).Height
  266.         picTemp.Width = imgButton(I).Width
  267.         picTemp.Height = imgButton(I).Height
  268.         picTemp.Picture = imgButton(I).Picture
  269.         picBitmap.AutoRedraw = -1
  270.         picTemp.AutoRedraw = -1
  271.         picTemp.Picture = picTemp.Image
  272.         iRes = BitBlt(picBitmap.hDC, imgButton(I).Left, imgButton(I).Top, imgButton(I).Width, imgButton(I).Height, picTemp.hDC, 0, 0, SRCCOPY)
  273.         picTemp.AutoRedraw = 0
  274.         picBitmap.AutoRedraw = 0
  275.         picBitmap.Picture = picBitmap.Image
  276.     Else
  277.         Err = 0
  278.     End If
  279.     Next I
  280.     frmAction.Hide
  281.     Screen.MousePointer = 0
  282.     sFile = msFileName
  283.     If sFile <> "" Then Mid$(sFile, Len(sFile), 1) = "P"
  284.     CMDialog1.Flags = &H2
  285.     CMDialog1.Filename = sFile
  286.     CMDialog1.DialogTitle = "Save the generated bitmap"
  287.     CMDialog1.Filter = "Bitmaps (*.bmp)|*.bmp"
  288.     CMDialog1.FilterIndex = 0
  289.     CMDialog1.CancelError = True
  290.     On Local Error Resume Next
  291.     CMDialog1.Action = 2
  292.     If Err = 0 Then
  293.     SavePicture picBitmap, CMDialog1.Filename
  294.     End If
  295. End Sub
  296.  
  297. Sub mnuNew_Click ()
  298.     If mbChanged Then
  299.     If MsgBox("Current bitmap has changed. Save changes?", 36, "bitmap changed") = 6 Then
  300.         mnuSave_Click
  301.         If mbCancel Then Exit Sub
  302.     End If
  303.     End If
  304.     NewBitmap
  305.     Me.Caption = msCaption + msUntitled
  306. End Sub
  307.  
  308. Sub mnuOpen_Click ()
  309.     If mbChanged Then
  310.     If MsgBox("Current bitmap has changed. Save changes?", 36, "bitmap changed") = 6 Then
  311.         mnuSave_Click
  312.         If mbCancel Then Exit Sub
  313.     End If
  314.     End If
  315.     CMDialog1.DialogTitle = "Open bitmap definition file"
  316.     CMDialog1.Filename = msFileName
  317.     CMDialog1.Filter = "Bitmap creator files (*.bmc)|*.bmc"
  318.     CMDialog1.FilterIndex = 0
  319.     CMDialog1.CancelError = True
  320.     On Local Error Resume Next
  321.     CMDialog1.Action = 1
  322.     If Err = 0 Then
  323.     msFileName = CMDialog1.Filename
  324.     OpenFile msFileName
  325.     End If
  326. End Sub
  327.  
  328. Sub mnuSave_Click ()
  329.     SaveFile False
  330. End Sub
  331.  
  332. Sub mnuSaveAs_Click ()
  333.     SaveFile True
  334. End Sub
  335.  
  336. Sub mnuSelDir_Click ()
  337. Dim sDir As String
  338.     sDir = gsBitmapDir
  339.     frmSelDir.Show 1
  340.     If gsBitmapDir <> sDir Then
  341.     frmSelBitmap!lblAction.Caption = "GO"
  342.     End If
  343. End Sub
  344.  
  345. Sub NewBitmap ()
  346. Dim I As Integer
  347.     On Local Error Resume Next
  348.     For I = 1 To iNrButtons
  349.     Unload imgButton(I)
  350.     Next I
  351.     iNrButtons = 0
  352. End Sub
  353.  
  354. Function NormalizePath (ByVal sPath As String) As String
  355.     If InStr(UCase$(sPath), UCase$(App.Path)) = 1 Then
  356.     sPath = Mid$(sPath, Len(App.Path) + 1)
  357.     If Left$(sPath, 1) = "\" Then sPath = Mid$(sPath, 2)
  358.     End If
  359.     NormalizePath = sPath
  360. End Function
  361.  
  362. Sub OpenFile (ByVal sFile As String)
  363. Dim sLine As String
  364. Dim sBitmap As String
  365. Dim iXpos As Integer, iYpos As Integer
  366. Dim iFree As Integer
  367. Dim iLineNo As Integer
  368. Dim iPos As Integer
  369.     Screen.MousePointer = 11
  370.     NewBitmap
  371.     On Local Error Resume Next
  372.     iFree = FreeFile
  373.     Open sFile For Input As #iFree
  374.     iLineNo = 0
  375.     iNrButtons = 0
  376.     Do While EOF(iFree) = False
  377.     Line Input #iFree, sLine
  378.     iLineNo = iLineNo + 1
  379.     sLine = Trim$(sLine)
  380.     If InStr(sLine, ";") <> 1 And sLine <> "" Then
  381.         If InStr(sLine, "=") = 0 Then
  382.         MsgBox "Syntax error in line #" + Format$(iLineNo) + " of " + sFile + ".", 48, "Error in file"
  383.         Else
  384.         sLine = Trim$(Mid$(sLine, InStr(sLine, "=") + 1))
  385.         If InStr(sLine, ",") = 0 Then
  386.             MsgBox "Syntax error in line #" + Format$(iLineNo) + " of " + sFile + ".", 48, "Error in file"
  387.         End If
  388.         iNrButtons = iNrButtons + 1
  389.         sBitmap = Left$(sLine, InStr(sLine, ",") - 1)
  390.         sLine = Mid$(sLine, InStr(sLine, ",") + 1)
  391.         Load imgButton(iNrButtons)
  392.         Err = 0
  393.         If InStr(sBitmap, ":") = 0 Then sBitmap = App.Path + "\" + sBitmap
  394.         imgButton(iNrButtons).Picture = LoadPicture(sBitmap)
  395.         imgButton(iNrButtons).Tag = sBitmap
  396.         If Err > 0 Then
  397.             MsgBox "Picture-file not found in line #" + Format$(iLineNo) + " of " + sFile + ".", 48, "Picture not loaded"
  398.             Unload imgButton(iNrButtons)
  399.             iNrButtons = iNrButtons - 1
  400.         Else
  401.             If InStr(sLine, ",") = 0 Then
  402.             MsgBox "X-coordinate not specified in line #" + Format$(iLineNo) + " of " + sFile + ".", 48, "Wrong coordinate"
  403.             Unload imgButton(iNrButtons)
  404.             iNrButtons = iNrButtons - 1
  405.             Else
  406.             iXpos = Val(Left$(sLine, InStr(sLine, ",") - 1))
  407.             sLine = Mid$(sLine, InStr(sLine, ",") + 1)
  408.             If iXpos < 0 Then iXpos = 0
  409.             If iXpos > 1024 Then iXpos = 1024 - imgButton(iNrButtons).Width
  410.             imgButton(iNrButtons).Left = iXpos
  411.             If sLine = "" Then
  412.                 MsgBox "Y-coordinate not specified in line #" + Format$(iLineNo) + " of " + sFile + ".", 48, "Wrong coordinate"
  413.                 Unload imgButton(iNrButtons)
  414.                 iNrButtons = iNrButtons - 1
  415.             Else
  416.                 iYpos = Val(sLine)
  417.                 If iYpos < 0 Then iYpos = 0
  418.                 If iYpos > 768 Then iYpos = 768 - imgButton(iNrButtons).Height
  419.                 imgButton(iNrButtons).Top = iYpos
  420.                 imgButton(iNrButtons).Visible = True
  421.                 imgButton(iNrButtons).ZOrder 0
  422.             End If
  423.             End If
  424.         End If
  425.         End If
  426.     End If
  427.     Loop
  428.     Close #iFree
  429.     iPos = Len(sFile)
  430.     Do While iPos > 0 And Mid$(sFile, iPos, 1) <> "\"
  431.     iPos = iPos - 1
  432.     Loop
  433.     If iPos > 0 Then sFile = Mid$(sFile, iPos + 1)
  434.     Me.Caption = msCaption + sFile
  435.     mbChanged = False
  436.     Screen.MousePointer = 0
  437. End Sub
  438.  
  439. Sub picBackGround_DblClick ()
  440.     gsFileName = ""
  441.     frmSelBitmap.Show 1
  442.     If gsFileName <> "" Then
  443.     iNrButtons = iNrButtons + 1
  444.     Load imgButton(iNrButtons)
  445.     imgButton(iNrButtons).Picture = LoadPicture(gsBitmapDir & gsFileName)
  446.     imgButton(iNrButtons).Left = (picContainer.Width - imgButton(iNrButtons).Width) \ 2 - picBackGround.Left
  447.     imgButton(iNrButtons).Top = (picContainer.Height - imgButton(iNrButtons).Height) \ 2 - picBackGround.Top
  448.     imgButton(iNrButtons).Tag = gsBitmapDir & gsFileName
  449.     imgButton(iNrButtons).Visible = True
  450.     mbChanged = True
  451.     End If
  452. End Sub
  453.  
  454. Function RoundTo (ByVal iWidth As Single, ByVal iX As Single) As Single
  455. Dim iPos As Integer
  456.     If mnuAutoGrid.Checked Then
  457.     iPos = 0
  458.     Do While iPos < iX
  459.         iPos = iPos + iWidth
  460.     Loop
  461.     If iPos - iX > iWidth / 2 Then iPos = iPos - iWidth
  462.     If iPos < 0 Then iPos = 0
  463.     Else
  464.     iPos = iX
  465.     End If
  466.     RoundTo = iPos
  467. End Function
  468.  
  469. Sub SaveFile (bAskName As Integer)
  470. Dim I As Integer
  471. Dim J As Integer
  472. Dim K As Integer
  473. Dim iFree As Integer
  474. Dim sFile As String
  475. Dim iPos As Integer
  476.     If msFileName = "" Or bAskName Then
  477.     CMDialog1.DialogTitle = "Save bitmapdefinition file"
  478.     CMDialog1.Flags = &H2
  479.     CMDialog1.Filename = msFileName
  480.     CMDialog1.Filter = "Bitmap creator files (*.bmc)|*.bmc"
  481.     CMDialog1.FilterIndex = 0
  482.     CMDialog1.CancelError = True
  483.     On Local Error Resume Next
  484.     CMDialog1.Action = 2
  485.     If Err = 0 Then
  486.         msFileName = CMDialog1.Filename
  487.     Else
  488.         mbCancel = True
  489.         Exit Sub
  490.     End If
  491.     End If
  492.     mbCancel = False
  493.     iFree = FreeFile
  494.     Open msFileName For Output As #iFree
  495.     J = 0
  496.     On Local Error Resume Next
  497.     For I = 1 To iNrButtons
  498.     K = imgButton(I).Left
  499.     If Err = 0 Then
  500.         J = J + 1
  501.         Print #iFree, "bitmap " + Format$(J, "000") + " = " + UCase$(NormalizePath(imgButton(I).Tag)) + "," + Format$(imgButton(I).Left) + "," + Format$(imgButton(I).Top)
  502.     Else
  503.         Err = 0
  504.     End If
  505.     Next I
  506.     Close #iFree
  507.     sFile = msFileName
  508.     iPos = Len(sFile)
  509.     Do While iPos > 0 And Mid$(sFile, iPos, 1) <> "\"
  510.     iPos = iPos - 1
  511.     Loop
  512.     If iPos > 0 Then sFile = Mid$(sFile, iPos + 1)
  513.     Me.Caption = msCaption + sFile
  514.     mbChanged = False
  515. End Sub
  516.  
  517. Sub ScrollHorizontal ()
  518.     picBackGround.Left = -hsbScroll.Value
  519. End Sub
  520.  
  521. Sub ScrollVertical ()
  522.     picBackGround.Top = -vsbScroll.Value
  523. End Sub
  524.  
  525. Sub vsbScroll_Change ()
  526.     ScrollVertical
  527. End Sub
  528.  
  529. Sub vsbScroll_Scroll ()
  530.     ScrollVertical
  531. End Sub
  532.  
  533.